package entidades;

import gestordeentidades.persistance.DataBaseObject;
import entidades.interfaces.IEstilo;
import entidades.interfaces.ITelhaBaseVisitado;
import javafx.beans.property.ObjectProperty;
import javafx.collections.ObservableList;

/**
 * Trabalho DAS - 2014/2015
 * @author a21210380, a21190325, a21210392
 */
public abstract class TelhaBase extends DataBaseObject implements IEstilo, ITelhaBaseVisitado {
    
    public abstract DesenhoDinamico getDesenho();
    
    public abstract Familia getFamilia();
    
    public abstract Rectangulo getRectangulo();

    public abstract boolean adicionarAncora(Ancora ancora);

    public abstract boolean removerAncora(Ancora ancora);
    
    public abstract ObservableList<Ancora> getAncoras();
    
    public abstract TipoTelha getTipoDeTelha();
    
    public abstract TelhaBase setTipoDeTelha(TipoTelha tipoDeTelha);
    
    public abstract void mover(float x, float y);
    
    public abstract void resize(float x, float y);
    
    public abstract ObjectProperty<Cor> corLinhaProperty();
    
    public abstract ObjectProperty<Cor> corTextoProperty();
    
    public abstract ObjectProperty<Textura> fundoProperty();
    
    @Override
    public abstract TelhaBase clone();
}
